package com.guguskins.back.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.guguskins.back.entity.GuBox;
import com.guguskins.back.entity.GuBoxItem;
import com.guguskins.back.entity.GuGoods;
import com.guguskins.back.entity.bo.*;
import com.guguskins.back.entity.vo.LuckDrawVo;
import com.guguskins.back.entity.vo.PageVo;
import com.guguskins.back.entity.vo.BoxPrizeVo;
import com.guguskins.back.entity.vo.PropStandDataDetailVo;

import java.util.List;

/**
 * <p>
 * 盲盒 服务类
 * </p>
 *
 * @author mybatis-plus
 * @since 2021-05-14
 */
public interface GuBoxService extends IService<GuBox> {

    PageVo<GuBox> backPage(int p, int size, int category, int state, int type, String searchKey);

    boolean backAdd(SaveBoxBo saveBoxBo);

    GuBox backDetail(long boxId);

    boolean backChangeState(GuBox box);

    boolean backEdit(EditBoxBo editBoxBo);

    boolean backChangeProbability(GuBoxItem boxItem);

    List<GuGoods> backGoodsListForIsNo(long boxId, String searchKey);

    boolean backAddGoods(SaveBoxGoodsBo saveBoxGoodsBo);

    boolean backRemoveGoods(GuBoxItem boxItem);

    GuBox getBox(Long boxId);

    GuBox getBoxCapacity(Long boxId);

//    List<GuGoods> calculationRate(List<GuGoods> goodsList);

    LuckDrawVo luckDraw(LuckDrawBo luckDrawBo);

    LuckDrawVo luckDrawInventory(LuckDrawInventoryBo luckDrawInventoryBo);

    List<GuBox> getBoxes(int boxType);

    PropStandDataDetailVo propStandDataDetail(int type, Long userId, Long boxId);

    Object recordCard(Long userId, UseCardBo useCardBo);

    Object cancelCard(Long userId, UseCardBo useCardBo);

    List<GuGoods> goodsListShow(Long userId, Long boxId, Integer id);

    BoxPrizeVo getPrize(Long userId, UseCardBo useCardBo);

    PropStandDataDetailVo propStandDataDetailById(Long userId, Long boxId, int id);

    List<BoxPrizeVo> getWhitePrize(Long userId, UseCardBo useCardBo);

    BoxPrizeVo putInventory(Long userId, UseCardBo useCardBo);

//    void exchangeGuCurrency(Long userId, UseCardBo useCardBo);
}
